<?php

//error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
//ini_set('display_errors','On');

use Doctrine\Common\Collections\ArrayCollection;

class Admin_ListadosController extends Zend_Controller_Action {

    private $clienteDao;
    private $creditoDao;
    private $promesasDao;
    private $referenciaDao;
    private $fullPath;
    private $personaDao;
    private $usuarioDao;

    public function init() {
        $auth = Zend_Auth::getInstance();

        if ($auth->hasIdentity()) {
            if (!empty($auth->getIdentity()->id)) {
                $usuarioDao = new Doctrine_Model_UsuariosDoctrineDao();
                $this->view->usuario = $usuarioDao->obtenerPorId($auth->getIdentity()->id);
            }
        } else {
            $this->_helper->redirector('index', 'login', 'admin');
        }

        /* Colores */
        $colores = array(
            '5b92d6' => array('5b92d6', '8fbaef'), //azul
            'd6d65b' => array('d6d65b', 'bfbf3f'), //amarillo
            '51ad56' => array('51ad56', '73be78'), //verde
            'db6f70' => array('db6f70', 'e59899'), //rojo
            '5e71a0' => array('5e71a0', '8e9cbc'), //azul oscuro
            'd68e5b' => array('d68e5b', 'e8a97c'), //naranja
            '92989f' => array('92989f', 'bbbec3')); //gris
        $this->view->colorSucursal = $colores[$this->view->usuario->getSucursal()->getColor()];
        /* Colores */
        
        $this->currencyFormat =  iconv('Windows-1252','utf-8','#,#0.00##\ $;[Red]-#,#0.00##\ $');
        
        $this->fullPath = $_SERVER["DOCUMENT_ROOT"];
        $this->pathUpload = 'financiera/adjuntos/';

        $this->usuarioDao = new Doctrine_Model_UsuarioDoctrineDao();
        $this->personaDao = new Doctrine_Model_PersonaDao();
        $this->creditoDao = new Doctrine_Model_CreditoDao();
        $this->promesasDao = new Doctrine_Model_PromesasDao();
        $this->referenciaDao = new Doctrine_Model_Referencias();

        $this->view->titulo = "Listados";
    }

    public function indexAction() {
        
    }

    public function promesasexcelAction() {
        $this->_helper->layout->disableLayout();
       set_time_limit(0);
        $this->view->cantidadDeMorosos = 0;
        $promesasEncontradas = new ArrayCollection();

        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        $sucursalId = $this->view->usuario->getSucursal()->getId();

        ini_set("memory_limit", "512M");
        $desde = $this->getRequest()->getParam('f_desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('f_hasta', date('d/m/Y'));
        if (!empty($desde) && !empty($hasta)) {
            $sucursalId = $this->getRequest()->getParam('sucursal_id', $sucursalId);
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;

            $desdeArray = explode('/', $desde);
            $hastaArray = explode('/', $hasta);
            $fechaDesde = $desdeArray[2] . '-' . $desdeArray[1] . '-' . $desdeArray[0];
            $fechaHasta = $hastaArray[2] . '-' . $hastaArray[1] . '-' . $hastaArray[0];

         //   $clientes = $this->promesasDao->obtenerEntreFechasSinNegocio($fechaDesde, $fechaHasta);
             $datosDePromesas = $this->promesasDao->obtenerEntreFechasSinNegocio($fechaDesde, $fechaHasta, $sucursalId);
        }

        $conjuntoPromesas = new ArrayCollection();

        foreach ($datosDePromesas as $datoPromesa) {
            if($datoPromesa['credito_id']){
                if($this->creditoDao->esActivo($datoPromesa['credito_id'])){
                    $usuario = $this->usuarioDao->obtenerPorId($datoPromesa['usuario_id']);
                    $datoPromesa["usuario"] = $usuario;
                    $conjuntoPromesas->add($datoPromesa);
                } 
            }
           
        }

        if ($conjuntoPromesas->count() == 0) {
            echo "<a class='btn btn-warning' href='" . $this->view->baseUrl("/admin/listados/promesas") . "' target='_blank'><i class='icon-download-alt'></i>Error!. Vuelva a intentarlo.</a>";
            return;
        }


        $objPHPExcel = new PHPExcel();
        $objPHPExcel->setActiveSheetIndex(0);
        $fila = 1;
        $objPHPExcel->getActiveSheet()->setCellValue("A{$fila}", "Mostrando promesas entre: {$desde} y {$hasta}");

        $fila = 2;
        $objPHPExcel->getActiveSheet()->setCellValue("A{$fila}", "DNI");
        $objPHPExcel->getActiveSheet()->setCellValue("B{$fila}", "NOMBRES");
        $objPHPExcel->getActiveSheet()->setCellValue("C{$fila}", "APELLIDOS");
        $objPHPExcel->getActiveSheet()->setCellValue("D{$fila}", "FECHA");
        $objPHPExcel->getActiveSheet()->setCellValue("E{$fila}", "COMENTARIO");
        $objPHPExcel->getActiveSheet()->setCellValue("F{$fila}", "SUCURSAL");

        $fila = 3;
        $promesas = new Doctrine_Model_Entities_Promesas();

        foreach ($conjuntoPromesas as $promesas) {
            $objPHPExcel->getActiveSheet()->setCellValue("A{$fila}", $promesas['nroDocumento']);
            $objPHPExcel->getActiveSheet()->setCellValue("B{$fila}", iconv("ISO-8859-1","UTF-8", $promesas['nombres']));
            $objPHPExcel->getActiveSheet()->setCellValue("C{$fila}", iconv("ISO-8859-1","UTF-8", $promesas['apellido']));
            $objPHPExcel->getActiveSheet()->setCellValue("D{$fila}", Doctrine_Model_Utilidad::formatoFechaMostrar($promesas['fechaPromesa'] ));
            $objPHPExcel->getActiveSheet()->setCellValue("E{$fila}", iconv("ISO-8859-1","UTF-8", $promesas['comentario']));
            $usuario = $promesas['usuario'];
            $objPHPExcel->getActiveSheet()->setCellValue("F{$fila}", iconv("ISO-8859-1","UTF-8", $usuario->getSucursal()->getDescripcion()));
            $fila++;
        }

        $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

        //$filename = "promesas_" . date("YmdHi") . ".xls";
        $filename = "listado_promesas.xls";
        $objWriter->save($filename);

        echo "<a class='btn btn-success' href='" . $this->view->baseUrl("/{$filename}") . "' target='_blank'><i class='icon-download-alt'></i>Descargar Listado Excel</a>";
    }

    public function promesasAction() {
        set_time_limit(0);
        $this->view->cantidadDeMorosos = 0;
        $promesasEncontradas = new ArrayCollection();

        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        $sucursalId = $this->view->usuario->getSucursal()->getId();

        ini_set("memory_limit", "512M");
        $desde = $this->getRequest()->getParam('desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('hasta', date('d/m/Y'));
        if (!empty($desde) && !empty($hasta)) {
            $sucursalId = $this->getRequest()->getParam('sucursal_id', $sucursalId);
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;

            $desdeArray = explode('/', $desde);
            $hastaArray = explode('/', $hasta);
            $fechaDesde = $desdeArray[2] . '-' . $desdeArray[1] . '-' . $desdeArray[0];
            $fechaHasta = $hastaArray[2] . '-' . $hastaArray[1] . '-' . $hastaArray[0];

         //   $clientes = $this->promesasDao->obtenerEntreFechasSinNegocio($fechaDesde, $fechaHasta);
             $datosDePromesas = $this->promesasDao->obtenerEntreFechasSinNegocio($fechaDesde, $fechaHasta, $sucursalId);
        }

        $conjuntoPromesas = new ArrayCollection();

        foreach ($datosDePromesas as $datoPromesa) {
            if($datoPromesa['credito_id']){
                if ($this->creditoDao->esActivo($datoPromesa['credito_id'])) {
                    $usuario = $this->usuarioDao->obtenerPorId($datoPromesa['usuario_id']);
                    $datoPromesa["usuario"] = $usuario;
                    $conjuntoPromesas->add($datoPromesa);
                }
            }
           
        }
        $this->view->sucursal_id = $sucursalId;
        $this->view->promesas = $conjuntoPromesas;
    }

    public function creditosporestadoAction() {
        set_time_limit(0);
        ini_set("memory_limit", "512M");

        $cantidad_cuotas = 0;
        
        $desde = $this->getRequest()->getParam('desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('hasta', date('d/m/Y'));
        $estado = $this->getRequest()->getParam('estado', 'todos');
        $tipo = $this->getRequest()->getParam('tipo', 0);
        $plan = $this->getRequest()->getParam('plan', 0);
        
        if (!empty($desde) && !empty($hasta)) {
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;

            $desdeArray = explode('/', $desde);
            $hastaArray = explode('/', $hasta);
            $fechaDesde = $desdeArray[2] . '-' . $desdeArray[1] . '-' . $desdeArray[0];
            $fechaHasta = $hastaArray[2] . '-' . $hastaArray[1] . '-' . $hastaArray[0];
            //    $promesasEncontradas = new ArrayCollection();

            $creditos = new ArrayCollection();
            $sucursalId = $this->view->usuario->getSucursal()->getId();
            $this->creditoDao = new Doctrine_Model_CreditoDao();
            switch ($estado) {
                case 'todos':
                    $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);
                    break;
                case 'activos':
                    $creditos = $this->creditoDao->obtenerActivosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);
                    break;
                case 'cancelados':
                    $creditos = $this->creditoDao->obtenerCanceladosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);
                    break;
                default:
                    break;
            }
            $creditos = $this->creditoDao->toArrayCollection($creditos);

            $credito = new Doctrine_Model_Entities_Credito();
            if ($tipo > 0) {
                foreach ($creditos as $credito) {
                    if ($credito->getTipo()->getId() != $tipo) {
                        $creditos->removeElement($credito);
                    }
                }
            }
            if ($plan > 0) {
                foreach ($creditos as $credito) {
                    if ($credito->getTasa()->getFormula()->getId() != $plan) {
                        $creditos->removeElement($credito);
                    }
                }
            }

            /* vuelta de dinero */
            $cantidad_creditos = count($creditos);
            $cantidad_cuotas = 0;
            foreach ($creditos as $credito) {
                $cantidad_cuotas += $credito->getCuotas()->count();
            }

            $porcentaje = ($cantidad_cuotas / $cantidad_creditos);
        }

        $this->view->porcentaje = $porcentaje;
        $this->view->cantidad_creditos = $cantidad_creditos;
        $this->view->cantidad_cuotas = $cantidad_cuotas;

        $this->view->creditos = $creditos;
        $this->view->estado = $estado;
        $this->view->tipo = $tipo;
        $this->view->plan = $plan;
    }

    public function clientesporcantidadcreditosAction() {

        $cantidad_de_creditos = $this->getRequest()->getParam('cantidad_de_creditos', 0);

        $personas = new Doctrine\Common\Collections\ArrayCollection();

        if ($cantidad_de_creditos) {

            $this->clienteDao = new Doctrine_Model_PersonaDao();
            $personas = $this->clienteDao->obtenerTodos();
        }
        $this->view->cantidad_de_creditos = $cantidad_de_creditos;
        $this->view->personas = $personas;
    }

    public function creditosenmoraAction() {
        $desde = $this->getRequest()->getParam('desde', 0);
        $hasta = $this->getRequest()->getParam('hasta', 0);
        $sucursal = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $this->view->sucursal = $sucursal;
        
        $creditosEnMorosidad = new ArrayCollection();

        if ($desde > 0 && $hasta > 0) {
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;
            
            
            $this->view->cantidad_creditos = 0;
            $sucursalId = $this->view->usuario->getSucursal()->getId();
            
            if ($sucursal > 0) {
                $creditosActivos = $this->creditoDao->obtenerTodosActivosPorSucursal($sucursal);
            } else {
                $creditosActivos = $this->creditoDao->obtenerTodosActivos();
            }

            $creditoActivo = new Doctrine_Model_Entities_Credito();
            
            foreach ($creditosActivos as $creditoActivo) {
                
                if ($creditoActivo->cantidadDeDiasDeMoraOriginal() >= $desde && $creditoActivo->cantidadDeDiasDeMoraOriginal() <= $hasta) {
                    $gar = $creditoActivo->getGarante() ? $creditoActivo->getGarante()->getNroDocumento() : "NO";
                    $datos = array(
                        "cliente_id" => $creditoActivo->getCliente()->getId(),
                        "credito_id" => $creditoActivo->getId(),
                        "credito_numero" => $creditoActivo->getNumero(),
                        "apellido_nombre" => "{$creditoActivo->getCliente()->getApellido()}, {$creditoActivo->getCliente()->getNombres()}",
                        "fecha_otorgacion" => $creditoActivo->getFecha(),
                        "monto" => $creditoActivo->getMonto(),
                        "garante" => $gar,
                        "cantidad_dias_morosidad" => intval($creditoActivo->cantidadDeDiasDeMora() > 0 ? $creditoActivo->cantidadDeDiasDeMora() : 0),
                        "cantidad_dias_morosidad_original" => intval($creditoActivo->cantidadDeDiasDeMoraOriginal() > 0 ? $creditoActivo->cantidadDeDiasDeMoraOriginal() : 0),
                        "sucursal" => $creditoActivo->getUsuario()->getSucursal()->getDescripcion()
                    );
                    $creditosEnMorosidad->add($datos);
                    $this->view->cantidad_creditos++;
                }
            }
        }
        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        $this->view->creditosEnMorosidad = $creditosEnMorosidad;
    }

    public function creditosenmoraexcelAction() {
        //$this->_helper->viewRenderer->setNoRender();
        $this->_helper->getHelper('layout')->disableLayout();
        header('Content-Type: text/html; charset=ISO-8859-1');

        $creditos_id = $this->getRequest()->getParam("creditos_id", null);

        if (is_null($creditos_id)) {
            echo "<a class='btn btn-warning' href='" . $this->view->baseUrl("/admin/listados/creditosenmora") . "' target='_blank'><i class='icon-download-alt'></i>Error!. Vuelva a intentarlo.</a>";
            return;
        }

        $credito = new Doctrine_Model_Entities_Credito();

        $creditos = new ArrayCollection();
        $creditos_id = explode(",", $creditos_id);

        foreach ($creditos_id as $id) {
            if ($credito = $this->creditoDao->obtenerPorId($id))
                $creditos->add($credito);
        }

        $objPHPExcel = new PHPExcel();
        $objWorksheet = $objPHPExcel->getActiveSheet();

        $objWorksheet->setCellValue("A1", "DOCUMENTO")->getColumnDimension("A")->setAutoSize(true);
        $objWorksheet->setCellValue("B1", "APELLIDO")->getColumnDimension("B")->setAutoSize(true);
        $objWorksheet->setCellValue("C1", "NOMBRE")->getColumnDimension("C")->setAutoSize(true);
        $objWorksheet->setCellValue("D1", "CREDITO")->getColumnDimension("D")->setAutoSize(true);
        $objWorksheet->setCellValue("E1", "MORA")->getColumnDimension("E")->setAutoSize(true);
        $objWorksheet->setCellValue("F1", "OTORGACION")->getColumnDimension("F")->setAutoSize(true);
        $objWorksheet->setCellValue("G1", "MONTO")->getColumnDimension("G")->setAutoSize(true);
        $objWorksheet->setCellValue("H1", "TIPO")->getColumnDimension("H")->setAutoSize(true);
        ;

        $cont = 2;
        foreach ($creditos as $credito) {

            $cantidad_dias_mora = $credito->cantidadDeDiasDeMora() > 0 ? $credito->cantidadDeDiasDeMora() : ( $credito->cantidadDeDiasDeMoraOriginal() > 0 ? $credito->cantidadDeDiasDeMoraOriginal() : 0);
            $garante = $credito->getGarante() ? $credito->getGarante()->getNroDocumento() : "NO";
            $objWorksheet
                ->setCellValue("A{$cont}", "{$credito->getCliente()->getNroDocumento()}({$credito->getCliente()->getTipoDocumento()->getDescripcion()})")
                ->setCellValue("B{$cont}", iconv("ISO-8859-1","UTF-8", $credito->getCliente()->getApellido()))
                ->setCellValue("C{$cont}", "{$credito->getCliente()->getNombres()}")
                ->setCellValue("D{$cont}", "{$credito->getNumero()}")
                ->setCellValue("E{$cont}", "{$cantidad_dias_mora}")
                ->setCellValue("F{$cont}", "{$credito->getFecha()->format("d/m/Y")}")
                ->setCellValue("G{$cont}", "{$credito->getMonto()}")
                ->setCellValue("H{$cont}", "TITULAR");
                    
            if ($credito->getGarante()) {
                $cont++;
                $objWorksheet
                    ->setCellValue("A{$cont}", "{$credito->getGarante()->getNroDocumento()}({$credito->getGarante()->getTipoDocumento()->getDescripcion()})")
                    ->setCellValue("B{$cont}", iconv("ISO-8859-1","UTF-8", $credito->getGarante()->getApellido()))
                    ->setCellValue("C{$cont}", "{$credito->getGarante()->getNombres()}")
                    ->setCellValue("D{$cont}", "{$credito->getNumero()}")
                    ->setCellValue("E{$cont}", "{$cantidad_dias_mora}")
                    ->setCellValue("F{$cont}", "{$credito->getFecha()->format("d/m/Y")}")
                    ->setCellValue("G{$cont}", "{$credito->getMonto()}")
                    ->setCellValue("H{$cont}", "GARANTE");
            }
            $cont++;
        }
        $ahora = new DateTime();
        $ahora = $ahora->format("YmdHi");
        $nombre_archivo = "morosos/LISTADO_MOROSOS.xls";
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save($nombre_archivo);

        echo "<a class='btn btn-success' href='" . $this->view->baseUrl($nombre_archivo) . "' target='_blank'><i class='icon-download-alt'></i>Descargar LISTADO EXCEL</a>";
    }

    private function cmp($a, $b) {
        return strnatcmp($a['dias_mora'], $b['dias_mora']);
    }

    public function cartasmorososAction() {
        set_time_limit(0);
        $this->view->cantidadDeMorosos = 0;
        ini_set("memory_limit", "512M");
        $desde = $this->getRequest()->getParam('desde', 0);
        $hasta = $this->getRequest()->getParam('hasta', 0);
        $diasExeptuados = $this->getRequest()->getParam('dias_exceptuados', 0);
        $this->view->dias_exceptuados = $diasExeptuados;
        $datosDeMorosos = new ArrayCollection();
        if ($desde > 0 && $hasta > 0) {
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;

            $sucursalId = $this->view->usuario->getSucursal()->getId();
            $creditosActivos = $this->creditoDao->obtenerTodosActivosPorSucursal($sucursalId);

            foreach ($creditosActivos as $creditoActivo) {
                if (!$creditoActivo->getCliente()->getMora()) {
                    if ($creditoActivo->cantidadDeDiasDeMoraOriginal() >= $desde && $creditoActivo->cantidadDeDiasDeMoraOriginal() <= $hasta) {
                        $direccionParticular = $creditoActivo->getCliente()->getDireccion();
                        if ($direccionParticular) {
                            $direccionParticularStr = $direccionParticular->getDireccion() . " Nº" . $direccionParticular->getNumero();
                            $localidadParticular = $direccionParticular->getLocalidad();
                            if ($localidadParticular) {
                                $localidadParticularStr = $localidadParticular->getDescripcion();
                            }
                        }
                        $datosLaborales = $creditoActivo->getCliente()->getDatosLaborales();
                        $datoLaboral = $datosLaborales->first();
                        if ($datoLaboral) {
                            $direccionLaboral = $datoLaboral->getDireccion();
                            if ($direccionLaboral) {
                                $direccionLaboralStr = $direccionLaboral->getDireccion() . " Nº" . $direccionLaboral->getNumero();
                                $localidadLaboral = $direccionLaboral->getLocalidad();
                                if ($localidadLaboral) {
                                    $localidadLaboralStr = $localidadLaboral->getDescripcion();
                                }
                            }
                        }
                        $garanteId=null;
                        $garante = $creditoActivo->getGarante();
                        if ($garante) {
                            $garanteId = $garante->getId();
                        } 

                        $hoy = new DateTime();
                        $cuotasImpagas = $creditoActivo->obtenerCuotasImpagas();
                        if ($cuotasImpagas->toArray()) {
                            $ultimaCuota = $cuotasImpagas->first();
                            $pagosRealizados = $ultimaCuota->getPagos();
                            if ($pagosRealizados->toArray()) {
                                $ultimoPagoRealizado = $pagosRealizados->last();
                                if ($ultimoPagoRealizado) {
                                    $fechaDeUltimoPago = $ultimoPagoRealizado->getFecha();
                                    $intervalo = $fechaDeUltimoPago->diff($hoy);
                                    $cantidadDeDiasDesdeUltimoPago = $intervalo->format('%R%a');
                                }
                            } else {
                                $cuotasPagas = $creditoActivo->obtenerCuotasPagas();
                                if ($cuotasPagas->toArray()) {
                                    $ultimaCuotaPaga = $cuotasPagas->last();
                                    $pagos = $ultimaCuotaPaga->getPagos();
                                    if ($pagos->toArray()) {
                                        $ultimoPagoRealizado = $pagos->last();
                                        if ($ultimoPagoRealizado) {
                                            $fechaDeUltimoPago = $ultimoPagoRealizado->getFecha();
                                            $intervalo = $fechaDeUltimoPago->diff($hoy);
                                            $cantidadDeDiasDesdeUltimoPago = $intervalo->format('%R%a');
                                        }
                                    }
                                } else {
                                    $cantidadDeDiasDesdeUltimoPago = $creditoActivo->cantidadDeDiasDeMora();
                                }
                            }
                        }
                        $excento = false;
                        if ($cantidadDeDiasDesdeUltimoPago >= $diasExeptuados) {
                            $excento = true;
                        }

                        if ($excento) {
                            $datos = array('cliente_id' => $creditoActivo->getCliente()->getId(), 'garante_id' => $garanteId, 'nro_documento' => $creditoActivo->getCliente()->getNroDocumento()
                                , 'apellido' => $creditoActivo->getCliente()->getApellido(), 'nombres' => $creditoActivo->getCliente()->getNombres(),
                                'credito_id' => $creditoActivo->getId(), 'numero_credito' => $creditoActivo->getNumero(),
                                'dias_mora' => $creditoActivo->cantidadDeDiasDeMora(), 'dias_mora_original' => $creditoActivo->cantidadDeDiasDeMoraOriginal(), 'fecha_ortogacion' => $creditoActivo->getFecha(), 'monto_financiado' => $creditoActivo->getMonto(),
                                'direccion_particular' => $direccionParticularStr, 'localidad_particular' => $localidadParticularStr,
                                'direccion_laboral' => $direccionLaboralStr, 'localidad_laboral' => $localidadLaboralStr, 'excento' => $excento, "d" => $cantidadDeDiasDesdeUltimoPago);
                            $datosDeMorosos->add($datos);
                            $this->view->cantidadDeMorosos++;
                        }
                    }
                }
            }
        }
        //usort($datosDeMorosos, 'cmp');
        $this->view->datosDeMorosos = array_reverse($datosDeMorosos->toArray());
    }

    public function cartaslaboralesAction() {
        set_time_limit(0);
        $this->view->cantidadDeMorosos = 0;
        ini_set("memory_limit", "512M");
        $desde = $this->getRequest()->getParam('desde', 0);
        $hasta = $this->getRequest()->getParam('hasta', 0);
        $datosDeMorosos = new ArrayCollection();
        if ($desde > 0 && $hasta > 0) {
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;

            $sucursalId = $this->view->usuario->getSucursal()->getId();
            $creditosActivos = $this->creditoDao->obtenerTodosActivosPorSucursal($sucursalId);

            foreach ($creditosActivos as $creditoActivo) {
                if (!$creditoActivo->getCliente()->getMora()) {
                    if (/*($creditoActivo->cantidadDeDiasDeMora() >= $desde && $creditoActivo->cantidadDeDiasDeMora() <= $hasta) ||*/ (($creditoActivo->cantidadDeDiasDeMoraOriginal() >= $desde && $creditoActivo->cantidadDeDiasDeMoraOriginal() <= $hasta))) {
                        $direccionParticular = $creditoActivo->getCliente()->getDireccion();
                        if ($direccionParticular) {
                            $direccionParticularStr = $direccionParticular->getDireccion() . " Nº" . $direccionParticular->getNumero();
                            $localidadParticular = $direccionParticular->getLocalidad();
                            if ($localidadParticular) {
                                $localidadParticularStr = $localidadParticular->getDescripcion();
                            }
                        }
                        $datosLaborales = $creditoActivo->getCliente()->getDatosLaborales();
                        $datoLaboral = $datosLaborales->first();
                        if ($datoLaboral) {
                            $direccionLaboral = $datoLaboral->getDireccion();
                            if ($direccionLaboral) {
                                $direccionLaboralStr = $direccionLaboral->getDireccion() . " Nº" . $direccionLaboral->getNumero();
                                $localidadLaboral = $direccionLaboral->getLocalidad();
                                if ($localidadLaboral) {
                                    $localidadLaboralStr = $localidadLaboral->getDescripcion();
                                }
                            }
                        }
                        $garante = $creditoActivo->getGarante();
                        if ($garante) {
                            $garanteId = $garante->getId();
                        }else{
                            $garanteId =null;
                        }
                        $datos = array('cliente_id' => $creditoActivo->getCliente()->getId(), 'garante_id' => $garanteId, 'nro_documento' => $creditoActivo->getCliente()->getNroDocumento()
                            , 'apellido' => $creditoActivo->getCliente()->getApellido(), 'nombres' => $creditoActivo->getCliente()->getNombres(),
                            'credito_id' => $creditoActivo->getId(), 'numero_credito' => $creditoActivo->getNumero(),
                            'dias_mora' => $creditoActivo->cantidadDeDiasDeMora(), 'dias_mora_original' => $creditoActivo->cantidadDeDiasDeMoraOriginal(), 'fecha_ortogacion' => $creditoActivo->getFecha(), 'monto_financiado' => $creditoActivo->getMonto(),
                            'direccion_particular' => $direccionParticularStr, 'localidad_particular' => $localidadParticularStr,
                            'direccion_laboral' => $direccionLaboralStr, 'localidad_laboral' => $localidadLaboralStr);
                        $datosDeMorosos->add($datos);

                        $this->view->cantidadDeMorosos++;
                    }
                }
            }
        }

        //usort($datosDeMorosos, 'cmp');
        $this->view->datosDeMorosos = array_reverse($datosDeMorosos->toArray());
    }

    public function ventasAction() {
        set_time_limit(0);

        ini_set("memory_limit", "512M");
        $desde = $this->getRequest()->getParam('desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('hasta', date('d/m/Y'));
        $estado = $this->getRequest()->getParam('estado', 'todos');
        $solo_facturados = $this->getRequest()->getParam('solo_facturados', null);
        $sucursalId = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $this->view->sucursal = $sucursalId;

        if (!empty($desde) && !empty($hasta)) {
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;
            $this->view->solo_facturados = $solo_facturados;

            $desdeArray = explode('/', $desde);
            $hastaArray = explode('/', $hasta);
            $fechaDesde = $desdeArray[2] . '-' . $desdeArray[1] . '-' . $desdeArray[0];
            $fechaHasta = $hastaArray[2] . '-' . $hastaArray[1] . '-' . $hastaArray[0];

            $this->creditoDao = new Doctrine_Model_CreditoDao();
            
            if ($sucursalId == 0):
                $creditos = $this->creditoDao->obtenerTodosEntreFechas($fechaDesde, $fechaHasta);
            else :
                $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);
            endif;
            if ($solo_facturados) {
                $c = array();
                foreach ($creditos as $credito) {
                    if ($credito->esFacturado()) {
                        $c[] = $credito;
                    }
                }
                $creditos = $c;
            }
        }
        
        
        
        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        $this->view->creditos = $creditos;
        $this->view->estado = $estado;
    }

    public function facturarAction() {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        
        $ids = $this->getRequest()->getParam('ids', null);
        $creditos = new ArrayCollection();
        
        $credito = new Doctrine_Model_Entities_Credito();
        foreach ($ids as $id) {
            
            $credito = $this->creditoDao->obtenerPorId($id);
          //  $credito->setNumeroFiccticio($credito->getNumeroFiccticio()+1);
            $credito->setFacturado(1);
            
            $creditos->add($credito);
        }
        
        foreach ($creditos as $credito) {
            $this->creditoDao->guardar($credito);
        }
        
        echo json_encode(array("error" => 0));
    }

    public function deudasAction() {
        
        $this->view->common = new Doctrine_Model_Entities_Common();
        
        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        
        $desde = $this->getRequest()->getParam('desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('hasta', date('d/m/Y'));
        $diasDeMora = $this->getRequest()->getParam('dias_mora');
        $sucursalId = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $this->view->sucursal = $sucursalId;
        
        $creditosConMora = new ArrayCollection();
        if (!empty($desde) && !empty($hasta)):
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;
            $this->view->dias_mora = $diasDeMora;
            
            $fechaDesde = DateTime::createFromFormat("d/m/Y", $desde);
            $fechaHasta = DateTime::createFromFormat("d/m/Y", $hasta);

            $this->creditoDao = new Doctrine_Model_CreditoDao();
            
            if ($sucursalId):
                $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"), $sucursalId);
            else:
                $creditos = $this->creditoDao->obtenerTodosEntreFechas($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"));
            endif;
            
            $totalDeCreditos = count($creditos);
            $montoTotalFinanciado = 0;
            $montoTotalFinanciadoDeMorosos = 0;

            foreach ($creditos as $credito) {
                $montoTotalFinanciado = $montoTotalFinanciado + $credito->obtenerMontoFinanciado();
                if ($credito->cantidadDeDiasDeMoraOriginal() >= $diasDeMora && $credito->cantidadDeDiasDeMoraOriginal() > 0) {
                    $creditosConMora->add($credito);
                    $montoTotalFinanciadoDeMorosos = $montoTotalFinanciadoDeMorosos + $credito->obtenerMontoFinanciado();
                }
            }
            $totalDeCreditosMorosos = count($creditosConMora);
            
            /* Mes a Mes */            
            $creditos_por_mes = array();
            foreach ($creditos as $credito):
                $mes = $credito->getFecha()->format("m/Y");
                if (!isset($creditos_por_mes[$mes])):
                    $creditos_por_mes[$mes] = array("cant" => 0, "cant_morosos" => 0, "monto" => 0, "monto_morosos" => 0, "deuda" => 0);                    
                endif;
                
                $creditos_por_mes[$mes]["cant"]++;
                $creditos_por_mes[$mes]["monto"] += $credito->obtenerMontoFinanciado();
                if ($credito->cantidadDeDiasDeMoraOriginal() >= $diasDeMora && $credito->cantidadDeDiasDeMoraOriginal() > 0):
                    $creditos_por_mes[$mes]["cant_morosos"]++;
                    $creditos_por_mes[$mes]["monto_morosos"] += $credito->obtenerMontoFinanciado();
                endif;
                
            endforeach;
            
            /* Mes a Mes conbinado */            
            $creditos_por_sucursal_por_mes = array();
            foreach ($creditos as $credito):

                $sucursal = new Doctrine_Model_Entities_Sucursal();
                $sucursal = $credito->getUsuario()->getSucursal();

                $mes = $credito->getFecha()->format("m/Y");
                if (!isset($creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()])):
                    $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()] = array("cant" => 0, "cant_morosos" => 0, "monto" => 0, "monto_morosos" => 0, "deuda" => 0);                    
                endif;

                $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["cant"]++;
                $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["monto"] += $credito->obtenerMontoFinanciado();
                if ($credito->cantidadDeDiasDeMoraOriginal() >= $diasDeMora && $credito->cantidadDeDiasDeMoraOriginal() > 0):
                    $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["cant_morosos"]++;
                    $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["monto_morosos"] += $credito->obtenerMontoFinanciado();
                endif;

            endforeach;
            
        endif;
        
        //Zend_Debug::dump($creditos_por_mes_por_sucursal, null, true); exit;
        
        $this->view->creditos_por_mes = $creditos_por_mes;
        $this->view->creditos_por_sucursal_por_mes = $creditos_por_sucursal_por_mes;
        
        $this->view->monto_total_financiado = $montoTotalFinanciado;
        $this->view->monto_total_financiado_por_morosos = $montoTotalFinanciadoDeMorosos;
        
        $montoTotalFinanciado <= 0 ? $montoTotalFinanciado = 1 : ""; /* por la division por cero */
        $this->view->deuda = round((($montoTotalFinanciadoDeMorosos * 100) / $montoTotalFinanciado), 2);
        $this->view->creditos = $creditosConMora;
        $this->view->cantidadDeCreditos = $totalDeCreditos;
        $this->view->cantidadDeCreditosMorosos = $totalDeCreditosMorosos;
    }
    
    public function exportardeudaAction(){
        
        $this->view->common = new Doctrine_Model_Entities_Common();
        
        $style_header = array(
            'font' => array('bold' => true,)
        );
        
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        
        $desde = $this->getRequest()->getParam('desde', null);
        $hasta = $this->getRequest()->getParam('hasta', null);
        $dias_mora = $this->getRequest()->getParam('dias_mora', null);
        $sucursal_id = $this->getRequest()->getParam('sucursal', null);
               
        $fechaDesde = DateTime::createFromFormat("d-m-Y", $desde);
        $fechaHasta = DateTime::createFromFormat("d-m-Y", $hasta);
        
        if ($sucursal_id):
            $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"), $sucursal_id);
        else:
            $creditos = $this->creditoDao->obtenerTodosEntreFechas($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"));
        endif;

        /* Mes a Mes conbinado */            
        $creditos_por_sucursal_por_mes = array();
        foreach ($creditos as $credito):

            $sucursal = new Doctrine_Model_Entities_Sucursal();
            $sucursal = $credito->getUsuario()->getSucursal();

            $mes = $credito->getFecha()->format("m/Y");
            if (!isset($creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()])):
                $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()] = array("cant" => 0, "cant_morosos" => 0, "monto" => 0, "monto_morosos" => 0, "deuda" => 0);                    
            endif;

            $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["cant"]++;
            $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["monto"] += $credito->obtenerMontoFinanciado();
            if ($credito->cantidadDeDiasDeMoraOriginal() >= $dias_mora && $credito->cantidadDeDiasDeMoraOriginal() > 0):
                $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["cant_morosos"]++;
                $creditos_por_sucursal_por_mes[$mes][$sucursal->getDescripcion()]["monto_morosos"] += $credito->obtenerMontoFinanciado();
            endif;

        endforeach;
        
        
        
        $objPHPExcel = new PHPExcel();
        
        /* propiedades */
        $objPHPExcel->getProperties()->setCreator("CREDYPHONE SA");
        $objPHPExcel->getProperties()->setTitle("CREDYPHONE SA - DINERO A COBRAR");
        $objPHPExcel->getProperties()->setDescription("EXPORTACION DINERO A COBRAR");

        $objPHPExcel->setActiveSheetIndex(0);
        
        $row = 1;
        
        $titulo_sucursal = "";
        if ($sucursal_id):
            $titulo_sucursal = $sucursal->getDescripcion();
        endif;
        
        $objPHPExcel->getActiveSheet()
                ->SetCellValue("A{$row}", "Deuda {$fechaDesde->format("d/m/Y")} - {$fechaHasta->format("d/m/Y")}: {$titulo_sucursal} ")
                ->getStyle("A{$row}")->applyFromArray($style_header);
        
        $row += 2;
        $objPHPExcel->getActiveSheet()->getStyle("A{$row}:P{$row}")->applyFromArray($style_header);
        
        $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", 'MES')->getColumnDimension("A")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", 'SUCURSAL')->getColumnDimension("B")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", 'CANTIDAD')->getColumnDimension("C")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", 'CANT MOROSOS')->getColumnDimension("D")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", 'FINANCIADO')->getColumnDimension("E")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", 'FINANCIADO MOROSO')->getColumnDimension("F")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", 'DEUDA')->getColumnDimension("G")->setAutoSize(true);
        
        $cant = 1; $init_row = $row++;
        foreach ($creditos_por_sucursal_por_mes as $mes => $datos):
            
            $mes = explode("/", $mes);
            $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", $this->view->common->descripcionMes(intval($mes[0])) . " de ". $mes[1]);
            
            foreach ($datos as $suc => $datos_suc):
                $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", iconv("ISO-8859-1","UTF-8", $suc));
                $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", $datos_suc["cant"]);
                $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", $datos_suc["cant_morosos"]);
                $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", number_format($datos_suc["monto"], 2, ",", "."));
                $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", number_format($datos_suc["monto_morosos"], 2, ",", "."));
                $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", round((($datos_suc["monto_morosos"] * 100) / $datos_suc["monto"]), 2) . " %");
                $row++;
            endforeach;
            
        endforeach;
        $end_row = $row - 1;
        
        //$objPHPExcel->getActiveSheet()->getStyle("B{$init_row}:B{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); /* Excel2007 */
        
        ob_end_clean();
        
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="DEUDAS.xls"');
        header('Cache-Control: max-age=0');

        $objWriter->save('php://output');
    }

    public function dineroacobrarAction() {
        
        $this->view->common = new Doctrine_Model_Entities_Common();
        
        $desde = $this->getRequest()->getParam('desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('hasta', date('d/m/Y'));
        $sucursalId = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $this->view->sucursal = $sucursalId;

        $creditosConMora = new ArrayCollection();
        if (!empty($desde) && !empty($hasta)) {
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;

            $fechaDesde = DateTime::createFromFormat("d/m/Y", $desde);
            $fechaHasta = DateTime::createFromFormat("d/m/Y", $hasta);

            $this->creditoDao = new Doctrine_Model_CreditoDao();
            
            if ($sucursalId):
                $cuotas = $this->creditoDao->obtenerCuotasAVencerEntreFechasPorSucursal($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"), $sucursalId);
            else:
                $cuotas = $this->creditoDao->obtenerCuotasAVencerEntreFechas($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"));
            endif;

            $montoTotalaCobrar = 0;
            $cuotas_por_mes = array();
            $cantidadCuotasTotal = 0;
            
            $cuota = new Doctrine_Model_Entities_Cuota();
            
            foreach ($cuotas as $cuota):
                $sucursal = new Doctrine_Model_Entities_Sucursal();
                $sucursal = $cuota->getCredito()->getUsuario()->getSucursal();
                $cantidadCuotasTotal++; 
                $montoTotalaCobrar += $cuota->getMontoOriginal();
            
                $mes = $cuota->getVencimientoOriginal()->format("m/Y");
                if (!isset($cuotas_por_mes[$mes][$sucursal->getDescripcion()])):
                    $cuotas_por_mes[$mes][$sucursal->getDescripcion()] = array("cant" => 0, "monto" => 0);                    
                endif;
                
                $cuotas_por_mes[$mes][$sucursal->getDescripcion()]["cant"]++;
                $cuotas_por_mes[$mes][$sucursal->getDescripcion()]["monto"] += $cuota->getMontoOriginal();
            
            endforeach;
        }
        
        $this->view->cuotas_por_mes = $cuotas_por_mes;
        
        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        $this->view->cantidad_cuotas_total = $cantidadCuotasTotal;
        $this->view->monto_total_a_cobrar = $montoTotalaCobrar;
    }

    public function exportardineroacobrarAction(){
        
        $this->view->common = new Doctrine_Model_Entities_Common();
        
        $style_header = array(
            'font' => array('bold' => true,)
        );
        
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        
        $desde = $this->getRequest()->getParam('desde', null);
        $hasta = $this->getRequest()->getParam('hasta', null);
        $sucursal = $this->getRequest()->getParam('sucursal', null);
               
        $fechaDesde = DateTime::createFromFormat("d-m-Y", $desde);
        $fechaHasta = DateTime::createFromFormat("d-m-Y", $hasta);
        
        if ($sucursal):
            $cuotas = $this->creditoDao->obtenerCuotasAVencerEntreFechasPorSucursal($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"), $sucursal);
        else:
            $cuotas = $this->creditoDao->obtenerCuotasAVencerEntreFechas($fechaDesde->format("Y-m-d"), $fechaHasta->format("Y-m-d"));
        endif;

        $montoTotalaCobrar = 0;
        $cuotas_por_mes = array();
        $cantidadCuotasTotal = 0;

        $cuota = new Doctrine_Model_Entities_Cuota();

        foreach ($cuotas as $cuota):
            $sucursal_cuota = new Doctrine_Model_Entities_Sucursal();
            $sucursal_cuota = $cuota->getCredito()->getUsuario()->getSucursal();
            $cantidadCuotasTotal++;
            $montoTotalaCobrar += $cuota->getMontoOriginal();

            $mes = $cuota->getVencimientoOriginal()->format("m/Y");
            if (!isset($cuotas_por_mes[$mes][$sucursal_cuota->getDescripcion()])):
                $cuotas_por_mes[$mes][$sucursal_cuota->getDescripcion()] = array("cant" => 0, "monto" => 0);
            endif;

            $cuotas_por_mes[$mes][$sucursal_cuota->getDescripcion()]["cant"] ++;
            $cuotas_por_mes[$mes][$sucursal_cuota->getDescripcion()]["monto"] += $cuota->getMontoOriginal();

        endforeach;

        $objPHPExcel = new PHPExcel();
        
        /* propiedades */
        $objPHPExcel->getProperties()->setCreator("CREDYPHONE SA");
        $objPHPExcel->getProperties()->setTitle("CREDYPHONE SA - DINERO A COBRAR");
        $objPHPExcel->getProperties()->setDescription("EXPORTACION DINERO A COBRAR");

        $objPHPExcel->setActiveSheetIndex(0);
        
        $row = 1;
        
        $objPHPExcel->getActiveSheet()
                ->SetCellValue("A{$row}", "Dinero a Cobrar {$fechaDesde->format("d/m/Y")} - {$fechaHasta->format("d/m/Y")}")
                ->getStyle("A{$row}")->applyFromArray($style_header);
        
        $row += 2;
        $objPHPExcel->getActiveSheet()->getStyle("A{$row}:P{$row}")->applyFromArray($style_header);
        
        $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", 'MES')->getColumnDimension("A")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", 'SUCURSAL')->getColumnDimension("B")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", 'CANTIDAD')->getColumnDimension("C")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", 'MONTO')->getColumnDimension("D")->setAutoSize(true);
        
        $cant = 1; $init_row = $row++;
        foreach ($cuotas_por_mes as $mes => $datos):
            
            $mes = explode("/", $mes);
            $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", $this->view->common->descripcionMes(intval($mes[0])) . " de ". $mes[1]);
            
            foreach ($datos as $suc => $datos_suc):
                $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", iconv("ISO-8859-1","UTF-8", $suc));
                $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", $datos_suc["cant"]);
                $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", number_format($datos_suc["monto"], 2, ",", "."));
                $row++;
            endforeach;
            
        endforeach;
        $end_row = $row - 1;
        
        //$objPHPExcel->getActiveSheet()->getStyle("B{$init_row}:B{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); /* Excel2007 */
        
        ob_end_clean();
        
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="DINERO-A-COBRAR.xls"');
        header('Cache-Control: max-age=0');

        $objWriter->save('php://output');
    }
    
    public function mailingsoldAction() {
        
        $desde = $this->getRequest()->getParam('desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('hasta', date('d/m/Y'));
        
        $cant_creditos_activos = $this->getRequest()->getParam('cant_creditos_activos', 0);
        
        $diasDeMora = $this->getRequest()->getParam('mora');
        
        //$estado = $this->getRequest()->getParam('estado', 'todos');
        $cred_cancelados = $this->getRequest()->getParam('cred_cancelados', 0);
        
        
        $cuotas_pagas = $this->getRequest()->getParam('cuotas_pagas');
        
        $cantidadDeCreditos = $this->getRequest()->getParam('cant_creditos');
        
        $dos_cuotas = $this->getRequest()->getParam('dos_cuotas');
        
        $creditosResult = new ArrayCollection();
        if (!empty($desde) && !empty($hasta)) {
            $this->view->desde = $desde;
            $this->view->hasta = $hasta;
            
            $this->view->cant_creditos_activos = $cant_creditos_activos;
            
            $this->view->mora = $diasDeMora;
            
            $this->view->cred_cancelados = $cred_cancelados;
            
            //$this->view->estado = $estado;
            $this->view->cuotas_pagas = $cuotas_pagas;
            $this->view->cant_creditos = $cantidadDeCreditos;
            $this->view->dos_cuotas = $dos_cuotas;
            
            $desdeArray = explode('/', $desde);
            $hastaArray = explode('/', $hasta);
            
            $fechaDesde = $desdeArray[2] . '-' . $desdeArray[1] . '-' . $desdeArray[0];
            $fechaHasta = $hastaArray[2] . '-' . $hastaArray[1] . '-' . $hastaArray[0];

            $this->creditoDao = new Doctrine_Model_CreditoDao();
            
            $sucursalId = $this->view->usuario->getSucursal()->getId();
            
            $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);

//            switch ($estado) {
//                case 'activos':
//                    $creditos = $this->creditoDao->obtenerActivosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);
//                    break;
//                case 'cancelados':
//                    $creditos = $this->creditoDao->obtenerCanceladosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);
//                    break;
//                default:
//                    $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fechaDesde, $fechaHasta, $sucursalId);
//                    break;
//            }

            $totalDeCreditos = count($creditos);

            foreach ($creditos as $credito) {
                $cantidadDeCreditosPorCliente = count($credito->getCliente()->getCreditos());
                $a = count($credito->obtenerCuotasPagas());
                $b = $credito->cantidadDeDiasDeMora();
                
                $cliente = $credito->getCliente();
                if ($cliente):
                    
                endif;
                
                if (count($credito->obtenerCuotasPagas()) > $cuotas_pagas && $credito->cantidadDeDiasDeMora() <= $diasDeMora && $cantidadDeCreditos < $cantidadDeCreditosPorCliente) {
                    if ($dos_cuotas) {
                        if (count($credito->obtenerCuotasImpagas()) == 2) {
                            $creditosResult->add($credito);
                        }
                    } else {
                        $creditosResult->add($credito);
                    }
                }
            }
        }

        $this->view->creditos = $creditosResult;
        $this->view->cantidadDeCreditos = $totalDeCreditos;
        $this->view->cantidadDeCreditosMorosos = $totalDeCreditosMorosos;
    }

    public function mailingsAction() {
        $totalDeCreditosMorosos = 0;
        $totalDeCreditos = 0;
        $creditos = array();
        
        $desde = $this->getRequest()->getParam('desde', date('d/m/Y'));
        $hasta = $this->getRequest()->getParam('hasta', date('d/m/Y'));
        $cant_creditos_activos = $this->getRequest()->getParam('cant_creditos_activos', null);
        $diasDeMora = $this->getRequest()->getParam('mora');
        $cred_cancelados = $this->getRequest()->getParam('cred_cancelados', null);
        $cuotas_pagas = $this->getRequest()->getParam('cuotas_pagas', 0);
        $cantidadDeCreditos = $this->getRequest()->getParam('cant_creditos', 0);
        $dos_cuotas = $this->getRequest()->getParam('dos_cuotas', false);
        
        $sucursalId = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $this->view->sucursal = $sucursalId;
        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        
        $conj_creditos = array();
        $conj_personas =  new ArrayCollection();
        if (!empty($desde) && !empty($hasta)):
            
            $desde = DateTime::createFromFormat("d/m/Y", $desde)->setTime(0,0,0);
            $hasta = DateTime::createFromFormat("d/m/Y", $hasta)->setTime(0,0,0);

            //$creditos = $this->creditoDao->obtenerTodosActivosEntreFechasPorSucursal($desde->format("Y-m-d"), $hasta->format("Y-m-d"), $sucursalId);
            
            if ($sucursalId):
                $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($desde->format("Y-m-d"), $hasta->format("Y-m-d"), $sucursalId);
            else:
                $creditos = $this->creditoDao->obtenerTodosEntreFechas($desde->format("Y-m-d"), $hasta->format("Y-m-d"));
            endif;
            
            $credito = new Doctrine_Model_Entities_Credito();
            
            $add = true;
            foreach ($creditos as $credito):
                
                /* Con credito */
                if ($cred_cancelados > 0):
                    if ($cred_cancelados == 1): /* que haya cancelado al menos una vez */
                        if ($credito->getCliente()->obtenerCantidadCreditosCancelados() <= 0):
                            continue;
                        endif;
                    elseif($cred_cancelados == 2): /* que nunca haya cancelado */
                        $add = false;
                        if ($credito->getCliente()->obtenerCantidadCreditosCancelados() != 0):
                            continue;
                        endif;
                    endif;                    
                endif;
                
                /* al menos N creditos activos */
                if (!is_null($cant_creditos_activos) && $cant_creditos_activos != ""):
                    if ($cant_creditos_activos == 0):
                        if ($credito->getCliente()->obtenerCantidadCreditosActivos() != 0):
                            continue;
                        endif;
                    elseif ($cant_creditos_activos > 0):
                        if ($credito->getCliente()->obtenerCantidadCreditosActivos() < $cant_creditos_activos):
                            continue;
                        endif;
                    endif;
                endif;

                /* solo si hay creditos activos */
                if (!is_null($cant_creditos_activos) && $cant_creditos_activos != "" && $cant_creditos_activos != 0):
                    /* mayor (>) a N cuotas pagas */
                    if ($cuotas_pagas > 0):
                        if ($credito->cuotasPagas() < $cuotas_pagas):
                            continue;
                        endif;
                    endif;

                    /* Mora no mayor a N dias */
                    if ($diasDeMora > 0):
                        if (!$credito->estoyAlDia()):
                            if ($credito->cantidadDeDiasDeMoraOriginal() > $diasDeMora):
                                continue;
                            endif;
                        else:
                            continue;
                        endif;
                    endif;
                    
                    /* 2 cuotas faltantes para cancelar */
                    if ($dos_cuotas):
                        if ( !in_array(count($credito->obtenerCuotasImpagas()), array(1,2))):
                            continue;
                        endif;
                    endif;
                    
                endif;
                
                /* Mas de N creditos (tanto cancelados como activos) */
                if ($cantidadDeCreditos > 0):
                    if (count($credito->getCliente()->getCreditos()) <= $cantidadDeCreditos):
                        continue;
                    endif;
                endif;
                
                $conj_creditos[] = $credito;
                if (!$conj_personas->contains($credito->getCliente())):
                    $conj_personas->add($credito->getCliente());
                endif;
                
            endforeach;
        endif;
        
        $this->view->desde = $desde->format("d/m/Y");
        $this->view->hasta = $hasta->format("d/m/Y");
        $this->view->cred_cancelados = $cred_cancelados;
        $this->view->cant_creditos_activos = $cant_creditos_activos;
        $this->view->cuotas_pagas = $cuotas_pagas;
        $this->view->mora = $diasDeMora;
        $this->view->cant_creditos = $cantidadDeCreditos;
        $this->view->dos_cuotas = $dos_cuotas;
        
        $this->view->personas = $conj_personas;
        $this->view->creditos = $conj_creditos;
        $this->view->cantidadDeCreditos = count($conj_creditos);
        $this->view->cantidadDeCreditosMorosos = $totalDeCreditosMorosos;
        
        return $this->render("mailings");
    }

    public function exportarmailingexcelAction(){
        
        $style_header = array(
            'font' => array('bold' => true,)
        );
        
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        
        $ids = $this->getRequest()->getParam('ids', null);
        
        $ar_ids = array();
        if ($ids):
            $ar_ids = explode(",", $ids);
        endif;
        
        $creditos = new ArrayCollection();
        foreach ($ar_ids as $id):
            $unCredito = $this->creditoDao->obtenerPorId($id);
            if ($unCredito):
                $creditos->add($unCredito);
            endif;
        endforeach;
        
        $objPHPExcel = new PHPExcel();
        
        /* propiedades */
        $objPHPExcel->getProperties()->setCreator("CREDYPHONE SA");
        $objPHPExcel->getProperties()->setTitle("CREDYPHONE SA - FACTURACION");
        $objPHPExcel->getProperties()->setDescription("EXPORTACION DE FACTURACION");

        $objPHPExcel->setActiveSheetIndex(0);
        
        $row = 1;
        
        $objPHPExcel->getActiveSheet()
                ->SetCellValue("A{$row}", "Mailings")
                ->getStyle("A{$row}")->applyFromArray($style_header);
        
        $row += 2;
        $objPHPExcel->getActiveSheet()->getStyle("A{$row}:P{$row}")->applyFromArray($style_header);
        
        $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", 'CLIENTE')->getColumnDimension("A")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", 'DNI')->getColumnDimension("B")->setAutoSize(true);
//        $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", 'N° CREDITO')->getColumnDimension("C")->setAutoSize(true);
//        $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", 'CUOTAS PAGAS')->getColumnDimension("D")->setAutoSize(true);
//        $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", 'CUOTAS FALTANTES')->getColumnDimension("E")->setAutoSize(true);
//        $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", 'MONTO CREDITO')->getColumnDimension("F")->setAutoSize(true);
        
        $cant = 1; $init_row = $row++;
        foreach ($creditos as $credito):
            $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", iconv("ISO-8859-1","UTF-8", "{$credito->getCliente()->getApellido()} {$credito->getCliente()->getNombres()}"));
            $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", $credito->getCliente()->getNroDocumento());
//            $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", $credito->getNumero());
//            $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", count($credito->obtenerCuotasPagas()));
//            $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", count($credito->obtenerCuotasImpagas()));
//            $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", $credito->getMonto());
            $row++;
        endforeach;
        $end_row = $row - 1;
        
        //$objPHPExcel->getActiveSheet()->getStyle("B{$init_row}:B{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); /* Excel2007 */
        
        ob_end_clean();
        
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="mailing.xls"');
        header('Cache-Control: max-age=0');

        $objWriter->save('php://output');
    }
    
    public function generarcartaslaboralesAction() {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();


        $clientesIds = $this->getRequest()->getParam("clientes");
        $garantesIds = $this->getRequest()->getParam("garantes");

        $credito = new Doctrine_Model_Entities_Credito();


        // create PDF
        $pdf = new Zend_Pdf();
        //$page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
        //$image = Zend_Pdf_Image::imageWithPath('imagenes/logoBlanco.jpg');

        $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_COURIER_BOLD);

        $c = 0;
        $c = -20;
        $f = 280;

        foreach ($clientesIds as $clienteId) {
            $cliente = $this->personaDao->obtenerPorId($clienteId);

            $datoLaborales = $cliente->getDatosLaborales();
            foreach ($datoLaborales as $datoLaboral) {

                $direccionDatoLaboral = $datoLaboral->getDireccion();


                $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);

                $page->setFont($font, 10)
                        ->drawText(date('d/m/Y'), 510, 815);
                if ($datoLaboral) {
                    $page->setFont($font, 12)
                            ->drawText(utf8_encode($datoLaboral->getEmpresa()), 300, 800, 'UTF-8');
                }
                if ($direccionDatoLaboral) {
                    $page->setFont($font, 12)
                            ->drawText(utf8_encode($direccionDatoLaboral->getDireccion()) . ' ' . utf8_encode($direccionDatoLaboral->getNumero()), 300, 785, 'UTF-8');
                    $page->setFont($font, 12)
                            ->drawText(utf8_encode($direccionDatoLaboral->getLocalidad()->getDescripcion()) . ' ' . utf8_encode($direccionDatoLaboral->getLocalidad()->getCodigoPostal()), 300, 770, 'UTF-8');
                }

                $page->setFont($font, 13)
                        ->drawText(utf8_encode($cliente->getNombres()) . ' ' . utf8_encode($cliente->getApellido()), 300, 535, 'UTF-8');
                $page->setFont($font, 13)
                        ->drawText(utf8_encode($cliente->getTipoDocumento()->getDescripcion()) . ' ' . utf8_encode($cliente->getNroDocumento()), 300, 518, 'UTF-8');

                $pdf->pages[] = $page;
            }
        }

        foreach ($garantesIds as $clienteId) {
            $cliente = $this->personaDao->obtenerPorId($clienteId);
            $datoLaborales = $cliente->getDatosLaborales();
            foreach ($datoLaborales as $datoLaboral) {


                $direccionDatoLaboral = $datoLaboral->getDireccion();

                $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);

                $page->setFont($font, 10)
                        ->drawText(date('d/m/Y'), 510, 815);
                if ($datoLaboral) {
                    $page->setFont($font, 12)
                            ->drawText(utf8_encode($datoLaboral->getEmpresa()), 300, 800, 'UTF-8');
                }

                if ($direccionDatoLaboral) {
                    $page->setFont($font, 12)
                            ->drawText(utf8_encode($direccionDatoLaboral->getDireccion()) . ' ' . utf8_encode($direccionDatoLaboral->getNumero()), 300, 785, 'UTF-8');
                    $page->setFont($font, 12)
                            ->drawText(utf8_encode($direccionDatoLaboral->getLocalidad()->getDescripcion()) . ' ' . utf8_encode($direccionDatoLaboral->getLocalidad()->getCodigoPostal()), 355, 770, 'UTF-8');
                }



                $page->setFont($font, 12)
                        ->drawText(utf8_encode($cliente->getNombres()) . ' ' . utf8_encode($cliente->getApellido()), 300, 620, 'UTF-8');
                $page->setFont($font, 12)
                        ->drawText(utf8_encode($cliente->getTipoDocumento()->getDescripcion()) . ' ' . utf8_encode($cliente->getNroDocumento()), 300, 608, 'UTF-8');

                $pdf->pages[] = $page;
            }
        }



        $fecha = new DateTime();
        $filename = "cartas_" . $fecha->format("d-m-Y");

        $this->getResponse()->setHeader('Content-type', 'application/pdf', true);
        $this->getResponse()->setHeader('Content-disposition', "inline; filename={$filename}.pdf", true);
        $this->getResponse()->setBody($pdf->render());
    }

    public function generarcartasmorososAction() {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();

        $clientesIds = $this->getRequest()->getParam("clientes");
        $garantesIds = $this->getRequest()->getParam("garantes");

        $credito = new Doctrine_Model_Entities_Credito();

        // create PDF
        $pdf = new Zend_Pdf();
        //$page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
        //$image = Zend_Pdf_Image::imageWithPath('imagenes/logoBlanco.jpg');

        $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_COURIER_BOLD);

        $c = 0;
        $c = -20;
        $f = 280;
        foreach ($clientesIds as $clienteId) {
            $cliente = $this->personaDao->obtenerPorId($clienteId);
            $direccion = $cliente->getDireccion();

            $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);

            //$page->setFont($font, 10)->drawTextAlign($page, date('d/m/Y'), 570, 815, null, "right");
            $page->setFont($font, 10)->drawTextAlign($page, date('d/m/Y'), 570, 815, null, "right", 'UTF-8');

            if ($cliente) {
                /* encoding = ISO-8859-1 ; UTF-8 */
                $page->setFont($font, 12)->drawTextAlign($page, utf8_encode($cliente->getNombres() . " " . $cliente->getApellido()), 300, 780, null, "left", 'UTF-8');
            }
            if ($direccion) {

                $page->setFont($font, 12)->drawTextAlign($page, utf8_encode($direccion->getDireccion()) . ' ' . utf8_decode($direccion->getNumero()), 300, 765, null, "left", 'UTF-8');
                $page->setFont($font, 12)->drawTextAlign($page, utf8_encode($direccion->getLocalidad()->getDescripcion()) . ' ' . utf8_encode($direccion->getLocalidad()->getCodigoPostal()), 300, 750, null, "left", 'UTF-8');
            }


            $pdf->pages[] = $page;
        }

        
        foreach ($garantesIds as $clienteId) {
            $cliente = $this->personaDao->obtenerPorId($clienteId);

            $direccion = $cliente->getDireccion();

            $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);

            $page->setFont($font, 10)
                    ->drawText(date('d/m/Y'), 510, 815);
            if ($cliente) {
                $page->setFont($font, 12)
                        ->drawText(utf8_decode($cliente->getNombres() . " " . $cliente->getApellido()), 355, 800);
            }
            if ($direccion) {
                $page->setFont($font, 12)
                        ->drawText(utf8_decode($direccion->getDireccion()) . ' ' . utf8_decode($direccion->getNumero()), 355, 785);
                $page->setFont($font, 12)
                        ->drawText(utf8_decode($direccion->getLocalidad()->getDescripcion()) . ' ' . utf8_decode($direccion->getLocalidad()->getCodigoPostal()), 355, 720);
            }


            $pdf->pages[] = $page;
        }
        


        $fecha = new DateTime();
        $filename = "cartas_" . $fecha->format("d-m-Y");

        $this->getResponse()->setHeader('Content-type', 'application/pdf', true);
        $this->getResponse()->setHeader('Content-disposition', "inline; filename={$filename}.pdf", true);
        $this->getResponse()->setBody($pdf->render());
    }

    public function generarcartasAction() {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();


        $creditosIds = $this->getRequest()->getParam("creditos");

        $credito = new Doctrine_Model_Entities_Credito();


        // create PDF
        $pdf = new Zend_Pdf();
        //$page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
        //$image = Zend_Pdf_Image::imageWithPath('imagenes/logoBlanco.jpg');

        $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_COURIER_BOLD);

        $c = 0;
        $c = -20;
        $f = 280;
        foreach ($creditosIds as $creditoId) {
            $credito = $this->creditoDao->obtenerPorId($creditoId);
            $cliente = $credito->getCliente();
            $direccionCliente = $cliente->getDireccion();

            $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);


            $page->setFont($font, 12)
                    ->drawText(utf8_encode($cliente->getNombres()) . ' ' . utf8_encode($cliente->getApellido()), 355, 800);
            if ($direccionCliente) {
                $page->setFont($font, 12)
                        ->drawText(utf8_encode($direccionCliente->getDireccion()) . ' ' . utf8_encode($direccionCliente->getNumero()), 355, 785);
                $page->setFont($font, 12)
                        ->drawText(utf8_encode($direccionCliente->getLocalidad()->getDescripcion()) . ' ' . utf8_encode($direccionCliente->getLocalidad()->getCodigoPostal()), 355, 770);
            }



            $page->setFont($font, 12)
                    ->drawText(utf8_encode($cliente->getNombres()) . ' ' . utf8_encode($cliente->getApellido()), 335, 620);
            $page->setFont($font, 12)
                    ->drawText(utf8_encode($cliente->getTipoDocumento()->getDescripcion()) . ' ' . utf8_encode($cliente->getNroDocumento()), 335, 608);

            $pdf->pages[] = $page;
        }



        $fecha = new DateTime();
        $filename = "cartas_" . $fecha->format("d-m-Y");

        $this->getResponse()->setHeader('Content-type', 'application/pdf', true);
        $this->getResponse()->setHeader('Content-disposition', "inline; filename={$filename}.pdf", true);
        $this->getResponse()->setBody($pdf->render());
    }

    public function clientesmorososexcelAction() {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        $datosDeMorosos = new ArrayCollection();

        $desde = $this->getRequest()->getParam('f_desde');
        $hasta = $this->getRequest()->getParam('f_hasta');
        if (!empty($desde) && !empty($hasta)) {



            $sucursalId = $this->view->usuario->getSucursal()->getId();
            $creditosActivos = $this->creditoDao->obtenerTodosActivosPorSucursal($sucursalId);
            foreach ($creditosActivos as $creditoActivo) {

                if (($creditoActivo->cantidadDeDiasDeMora() >= $desde && $creditoActivo->cantidadDeDiasDeMora() <= $hasta) || (($creditoActivo->cantidadDeDiasDeMoraOriginal() >= $desde && $creditoActivo->cantidadDeDiasDeMoraOriginal() <= $hasta))) {
                    $direccionParticular = $creditoActivo->getCliente()->getDireccion();
                    if ($direccionParticular) {
                        $direccionParticularStr = $direccionParticular->getDireccion() . " Nº" . $direccionParticular->getNumero();
                        $localidadParticular = $direccionParticular->getLocalidad();
                        if ($localidadParticular) {
                            $localidadParticularStr = $localidadParticular->getDescripcion();
                        }
                    }
                    $datosLaborales = $creditoActivo->getCliente()->getDatosLaborales();
                    $datoLaboral = $datosLaborales->first();
                    if ($datoLaboral) {
                        $direccionLaboral = $datoLaboral->getDireccion();
                        if ($direccionLaboral) {
                            $direccionLaboralStr = $direccionLaboral->getDireccion() . " Nº" . $direccionLaboral->getNumero();
                            $localidadLaboral = $direccionLaboral->getLocalidad();
                            if ($localidadLaboral) {
                                $localidadLaboralStr = $localidadLaboral->getDescripcion();
                            }
                        }
                    }

                    $datos = array('cliente_id' => $creditoActivo->getCliente()->getId(), 'nro_documento' => $creditoActivo->getCliente()->getNroDocumento()
                        , 'apellido' => $creditoActivo->getCliente()->getApellido(), 'nombres' => $creditoActivo->getCliente()->getNombres(),
                        'credito_id' => $creditoActivo->getId(), 'numero_credito' => $creditoActivo->getNumero(),
                        'dias_mora' => $creditoActivo->cantidadDeDiasDeMora(), 'fecha_ortogacion' => $creditoActivo->getFecha(), 'monto_financiado' => $creditoActivo->getMonto(),
                        'direccion_particular' => $direccionParticularStr, 'localidad_particular' => $localidadParticularStr,
                        'direccion_laboral' => $direccionLaboralStr, 'localidad_laboral' => $localidadLaboralStr);
                    $datosDeMorosos->add($datos);

                    usort($datosDeMorosos, 'cmp');
                }
            }
        }


        $objPHPExcel = new PHPExcel();

        $objPHPExcel->setActiveSheetIndex(0);
        $objPHPExcel->getProperties()->setCreator("Credyphone");
        $objPHPExcel->getProperties()->setLastModifiedBy("Credyphone s.a.");
        $objPHPExcel->getProperties()->setTitle("Clientes morosos");

        $fila = 1;
        $objPHPExcel->setActiveSheetIndex(0);
        $objPHPExcel->getActiveSheet()->setCellValue("A" . $fila, "clientes morosos entre: " . $desde . " y " . $hasta);
        $fila = 2;
        $objPHPExcel->setActiveSheetIndex(0);
        $objPHPExcel->getActiveSheet()->setCellValue("A{$fila}", "NOMBRES");
        $objPHPExcel->getActiveSheet()->setCellValue("B{$fila}", "APELLIDO");
        $objPHPExcel->getActiveSheet()->setCellValue("C{$fila}", "F. OTORGACION");
        $objPHPExcel->getActiveSheet()->setCellValue("D{$fila}", "MONTO");
        $objPHPExcel->getActiveSheet()->setCellValue("E{$fila}", "DIR PARTICULAR");
        $objPHPExcel->getActiveSheet()->setCellValue("F{$fila}", "LOC PARTICULAR");
        $objPHPExcel->getActiveSheet()->setCellValue("G{$fila}", "DIR LABORAL");
        $objPHPExcel->getActiveSheet()->setCellValue("H{$fila}", "LOC LABORAL");

        $fila = 3;
        foreach ($datosDeMorosos as $datos) {
            $objPHPExcel->setActiveSheetIndex(0);
            $objPHPExcel->getActiveSheet()->setCellValue("A{$fila}", $datos['nombres']);
            $objPHPExcel->getActiveSheet()->setCellValue("B{$fila}", $datos['apellido']);
            $objPHPExcel->getActiveSheet()->setCellValue("C{$fila}", $datos['fecha_ortogacion']->format('d/m/Y'));
            $objPHPExcel->getActiveSheet()->setCellValue("D{$fila}", $datos['monto_financiado']);
            $objPHPExcel->getActiveSheet()->setCellValue("E{$fila}", $datos['direccion_particular']);
            $objPHPExcel->getActiveSheet()->setCellValue("F{$fila}", $datos['localidad_particular']);
            $objPHPExcel->getActiveSheet()->setCellValue("G{$fila}", $datos['direccion_laboral']);
            $objPHPExcel->getActiveSheet()->setCellValue("H{$fila}", $datos['localidad_laboral']);
            $fila++;
        }


        $filename = "listadoMorosos.xls";
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

        $objWriter->save($filename);
        echo "<a href='" . $this->view->baseUrl() . "/" . $filename . "'>" . $filename . "</a>";
        exit;
    }

    public function verazAction() {
        //$this->_helper->viewRenderer->setNoRender();
        $this->_helper->getHelper('layout')->disableLayout();

        $creditos_id = $this->getRequest()->getParam("creditos_id", null);

        if (is_null($creditos_id))
            echo "<a class='btn btn-error' href='" . $this->view->baseUrl("/admin/listados/creditosenmora") . "' target='_blank'><i class='icon-download-alt'></i>Error!. Vuelva a intentarlo.</a>";

        $credito = new Doctrine_Model_Entities_Credito();

        $creditos = new ArrayCollection();
        $creditos_id = explode(",", $creditos_id);

        foreach ($creditos_id as $id) {
            if ($credito = $this->creditoDao->obtenerPorId($id))
                $creditos->add($credito);
        }

        $objPHPexcel = PHPExcel_IOFactory::load('morosos/morosos.xls');
        $objWorksheet = $objPHPexcel->getActiveSheet();

        $objWorksheet
                ->setCellValue("A1", "C097420000SR") //codigo adherente
                ->setCellValue("B1", "INI")
                ->setCellValue("C1", "AGILCRED PHONE SRL - CREDYPHONE");

        $cont = 3;
        foreach ($creditos as $credito) {
            
            $nombre = iconv("ISO-8859-1","UTF-8", $credito->getCliente()->getApellido()).", ".iconv("ISO-8859-1","UTF-8", $credito->getCliente()->getNombres());
            $objWorksheet
                ->setCellValue("A{$cont}", "{$nombre}") // NOMBRE COMPLETO DE PERSONA FISICA
                ->setCellValue("B{$cont}", "{$credito->getCliente()->getNroDocumento()}") // DNI - CUIL
                ->setCellValue("C{$cont}", 0) //SUCURSAL
                ->setCellValue("D{$cont}", "PP") // TIPO DE OPERACION - PRESTAMOS PERSONAL (PP)
                ->setCellValue("E{$cont}", "TIT") // CALIDAD - TITULAR (TIT)
                ->setCellValue("F{$cont}", "{$credito->getNumero()}") // NRO OPERACION - IDENTIFICADOR DEL PRESTAMO
                ->setCellValue("H{$cont}", "{$credito->getMonto()}") //IMPORTE
                ->setCellValue("I{$cont}", "AGILCRED PHONE SRL - CREDYPHONE") // NOMBRE ACREEDOR
                ->setCellValue("J{$cont}", "{$credito->obtenerProximoVencimiento()->format("Ymd")}") //FECHA DE INICIO DE MORA "AAAA/MM/DD"
                ->setCellValue("K{$cont}", "{$credito->getCliente()->getSexo()}"); //SEXO
            
            if ($credito->getGarante()) {
                $cont++;
                $nombre = iconv("ISO-8859-1","UTF-8", $credito->getGarante()->getApellido()).", ".iconv("ISO-8859-1","UTF-8", $credito->getGarante()->getNombres());
                $objWorksheet
                    ->setCellValue("A{$cont}", "{$nombre}") // NOMBRE COMPLETO DE PERSONA FISICA
                    ->setCellValue("B{$cont}", "{$credito->getGarante()->getNroDocumento()}") // DNI - CUIL
                    ->setCellValue("C{$cont}", 0) //SUCURSAL
                    ->setCellValue("D{$cont}", "PP") // TIPO DE OPERACION - PRESTAMOS PERSONAL (PP)
                    ->setCellValue("E{$cont}", "GAR") // CALIDAD - TITULAR (TIT)
                    ->setCellValue("F{$cont}", "{$credito->getNumero()}") // NRO OPERACION - IDENTIFICADOR DEL PRESTAMO
                    ->setCellValue("H{$cont}", "{$credito->getMonto()}") //IMPORTE
                    ->setCellValue("I{$cont}", "AGILCRED PHONE SRL - CREDYPHONE") // NOMBRE ACREEDOR
                    ->setCellValue("J{$cont}", "{$credito->obtenerProximoVencimiento()->format("Ymd")}") //FECHA DE INICIO DE MORA "AAAA/MM/DD"
                    ->setCellValue("K{$cont}", "{$credito->getGarante()->getSexo()}"); //SEXO
            }
            $cont++;
        }

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, 'Excel5');
        $objWriter->save('morosos/veraz.xls');

        $fecha = new DateTime();

        echo "<a class='btn btn-success' href='" . $this->view->baseUrl("morosos/veraz.xls") . "' target='_blank'><i class='icon-download-alt'></i>Descargar VERAZ</a>";
    }

    public function clientesAction() {
        $nro_documento = $this->getRequest()->getParam("bc_nro_documento") ? $this->getRequest()->getParam("bc_nro_documento") : null;
        $solo_con_email = $this->getRequest()->getParam("solo_con_email") ? $this->getRequest()->getParam("solo_con_email") : null;
        $en_advertencia = $this->getRequest()->getParam("en_advertencia") ? $this->getRequest()->getParam("en_advertencia") : null;
        $apellido = $this->getRequest()->getParam("bc_apellido") ? $this->getRequest()->getParam("bc_apellido") : null;
        $nombres = $this->getRequest()->getParam("bc_nombres") ? $this->getRequest()->getParam("bc_nombres") : null;
        $bc_empresa = $this->getRequest()->getParam("bc_empresa") ? $this->getRequest()->getParam("bc_empresa") : null;
        $bc_lugar_de_trabajo = $this->getRequest()->getParam("bc_lugar_de_trabajo") ? $this->getRequest()->getParam("bc_lugar_de_trabajo") : null;
        $page = $this->getRequest()->getParam("page") ? $this->getRequest()->getParam("page") : 1;

        $personas = new Doctrine\Common\Collections\ArrayCollection();

        if ($nro_documento) {
            $personas = $this->personaDao->obtenerPorNroDocumento($nro_documento);
        } else if ($apellido) {
            $personas = $this->personaDao->obtenerPorApellido($apellido);
        } else if ($nombres) {
            $personas = $this->personaDao->obtenerPorNombres($nombres);
        } else if ($bc_empresa){
            $personas = $this->personaDao->obtenerPorEmpresa($bc_empresa);
        } else if ($bc_lugar_de_trabajo){
            $personas = $this->personaDao->obtenerPorLugarDeTrabajo($bc_lugar_de_trabajo);
        } else {
            $personas = $this->personaDao->obtenerTodos();
        }

        $personasSoloConEmail = new Doctrine\Common\Collections\ArrayCollection();
        $personasConCredito = new Doctrine\Common\Collections\ArrayCollection();

        if ($solo_con_email) {
            foreach ($personas as $persona) {
                if ($persona->getMail() != "" && count($persona->getCreditos()))
                    $personasSoloConEmail->add($persona);
            }
            $personas = $personasSoloConEmail->toArray();
        } else {
            foreach ($personas as $persona) {
                if (count($persona->getCreditos()))
                    $personasConCredito->add($persona);
            }
            $personas = $personasConCredito->toArray();
        }
        
        
        
        if ($en_advertencia):
            foreach ($personas as $persona):
                if ($persona->getMora()):
                    $conjPersonas[] = $persona;
                endif;
            endforeach;
            $personas = $conjPersonas;
        endif;
        
//        $paginador = Zend_Paginator::factory($personas);
//        $paginador->setItemCountPerPage(20)
//                ->setCurrentPageNumber($page)
//                ->setPageRange(10);
//        $this->view->personas = $paginador;
        
        $this->view->bc_apellido = $apellido;
        $this->view->bc_nombres = $nombres;
        $this->view->bc_empresa = $bc_empresa;
        $this->view->bc_lugar_de_trabajo = $bc_lugar_de_trabajo;
        $this->view->bc_nro_documento = $nro_documento;
        
        $this->view->solo_con_email = $solo_con_email;
        $this->view->en_advertencia = $en_advertencia;
        $this->view->personas = $personas;
    }

    public function publicidadAction() {
        $desde = $this->getRequest()->getParam("b_desde") ? $this->getRequest()->getParam("b_desde") : null;
        $hasta = $this->getRequest()->getParam("b_hasta") ? $this->getRequest()->getParam("b_hasta") : null;
        $publicidad = $this->getRequest()->getParam("b_publicidad") ? $this->getRequest()->getParam("b_publicidad") : null;
        $sucursal = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $this->view->sucursal = $sucursal;

        $personas = array();
        $conjCreditos = array();

        $this->view->personas_por_pagina = 25;
        $this->view->publicidades = $this->referenciaDao->obternerPublicidades();

        if ($desde):
            if (!$hasta):
                $hasta = $desde;
            endif;

            $this->view->b_desde = $desde;
            $this->view->b_hasta = $hasta;
            $this->view->b_publicidad = $publicidad;

            $f_desde = DateTime::createFromFormat("d/m/Y", $desde);
            $f_hasta = DateTime::createFromFormat("d/m/Y", $hasta);
            
            if ($sucursal):
                $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($f_desde->format("Y-m-d"), $f_hasta->format("Y-m-d"), $sucursal);
            else:
                $creditos = $this->creditoDao->obtenerTodosEntreFechas($f_desde->format("Y-m-d"), $f_hasta->format("Y-m-d"));
            endif;
            if ($publicidad != "" && !is_null($publicidad)) {
                foreach ($creditos as $credito) {
                    if ($credito->getPublicidad()) {
                        if ($credito->getPublicidad()->getId() == $publicidad && $credito->getUsuario()->getSucursal()->getId() == $this->view->usuario->getSucursal()->getId()) {
                            $conjCreditos[] = $credito;
                        }
                    }
                }
            } else {
                foreach ($creditos as $credito) {
                    if ($credito->getPublicidad()):
                        $conjCreditos[] = $credito;
                    endif;
                }
            }
        endif;
        
        $group_publicidad = array();
        foreach ($conjCreditos as $credito):
            if ($credito->getPublicidad()):
                if (!isset($group_publicidad[$credito->getPublicidad()->getDescripcion()])):
                    $group_publicidad[$credito->getPublicidad()->getDescripcion()] = 1;
                else:
                    $group_publicidad[$credito->getPublicidad()->getDescripcion()]++;
                endif; 
            endif;
        endforeach;
        
        $this->view->sucursales = Doctrine_Model_Referencias::obtenerTodas('Doctrine_Model_Entities_Sucursal');
        $this->view->group_pulicidad = $group_publicidad;
        $this->view->creditos = $conjCreditos;
    }

    public function exportfacturacionAction()
    {
        $style_header = array(
            'fill' => array(
                'type' => PHPExcel_Style_Fill::FILL_SOLID,
                'color' => array('rgb' => 'f8f988'),
            ),
            'font' => array('bold' => true,)
        );
        $style_header1 = array(
            'font' => array('bold' => true,)
        );
        $style_header2 = array(
            'fill' => array(
                'type' => PHPExcel_Style_Fill::FILL_SOLID,
                'color' => array('rgb' => 'b7fda1'),
            ),
            'font' => array('bold' => true,)
        );
        $style_header3 = array(
            'fill' => array(
                'type' => PHPExcel_Style_Fill::FILL_SOLID,
                'color' => array('rgb' => '94b9f9'),
            ),
            'font' => array('bold' => true,)
        );
        
        $this->_helper->viewRenderer->setNoRender();
        $this->_helper->getHelper('layout')->disableLayout();
        
        $this->creditoDao = new Doctrine_Model_CreditoDao();
        
        $desde = $this->getRequest()->getParam('desde', null);
        $hasta = $this->getRequest()->getParam('hasta', null);
        $sucursalId = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $solo_facturados = $this->getRequest()->getParam('solo_facturados', null);
        
        $creditos = array();
        $creditos_facturados = array();
        
        if (!empty($desde) && !empty($hasta)):
            $fecha_desde = DateTime::createFromFormat("d-m-Y", $desde);
            $fecha_hasta = DateTime::createFromFormat("d-m-Y", $hasta);
            
            if ($sucursalId):
                $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fecha_desde->format("Y-m-d"), $fecha_hasta->format("Y-m-d"), $sucursalId);
            elseif ($sucursalId == 0):
                $creditos = $this->creditoDao->obtenerTodosEntreFechas($fecha_desde->format("Y-m-d"), $fecha_hasta->format("Y-m-d"));
            endif;
            
            foreach ($creditos as $credito):
                if ($solo_facturados):
                    if ($credito->esFacturado()):
                        $creditos_facturados[$credito->getFecha()->format("m/Y")][] = $credito;
                    endif;
                else:
                    $creditos_facturados[$credito->getFecha()->format("m/Y")][] = $credito;
                endif;
            endforeach;
        endif;
        
        $objPHPExcel = new PHPExcel();
        
        /* propiedades */
        $objPHPExcel->getProperties()->setCreator("CREDYPHONE SA");
        $objPHPExcel->getProperties()->setTitle("CREDYPHONE SA - FACTURACION");
        $objPHPExcel->getProperties()->setDescription("EXPORTACION DE FACTURACION");

        $objPHPExcel->setActiveSheetIndex(0);
        
        $row = 1;
        
        $objPHPExcel->getActiveSheet()
                ->SetCellValue("A{$row}", "VENTAS DEL {$fecha_desde->format("d/m/Y")} AL {$fecha_hasta->format("d/m/Y")}")
                ->getStyle("A{$row}")->applyFromArray($style_header1);
        
        /* titles */
        $row += 2;
        $objPHPExcel->getActiveSheet()->getStyle("A{$row}:Q{$row}")->applyFromArray($style_header);
        $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", 'CLIENTE')->getColumnDimension("A")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", 'CREDITO')->getColumnDimension("B")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", 'N°')->getColumnDimension("C")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", 'CANT. CUOTAS')->getColumnDimension("D")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", 'CUOTA PURA')->getColumnDimension("E")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", 'PLAN CUOTA')->getColumnDimension("F")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", 'GTOS. E INT. PLAN')->getColumnDimension("G")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("H{$row}", 'FECHA CRED.')->getColumnDimension("H")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("I{$row}", 'INT. DEL PERIODO')->getColumnDimension("I")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("J{$row}", 'INT. POR MES')->getColumnDimension("J")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("K{$row}", 'IVA PERIODO')->getColumnDimension("K")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("L{$row}", 'IVA POR MES')->getColumnDimension("L")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("M{$row}", 'CUOTAS PAGAS')->getColumnDimension("M")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("N{$row}", 'DEBE CAPITAL')->getColumnDimension("N")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("O{$row}", 'DEBE INT.')->getColumnDimension("O")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("P{$row}", 'IVA')->getColumnDimension("P")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("Q{$row}", 'FACTURADO')->getColumnDimension("Q")->setAutoSize(true);
        
        $credito = new Doctrine_Model_Entities_Credito();
        
        $cant = 1; $init_row = $row++;
        foreach ($creditos_facturados as $periodo):
            $new_periodo = true;
            foreach ($periodo as $credito):
                if ($new_periodo):
                    $fecha_periodo = $credito->getFecha()->format("m/Y");
                    $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", $fecha_periodo)
                            ->getStyle("A{$row}:Q{$row}")->applyFromArray($style_header2);
                    $new_periodo = false; $row++; 
                endif;
                $nombre = "{$credito->getCliente()->getApellido()}, {$credito->getCliente()->getNombres()}";
                $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", iconv("ISO-8859-1","UTF-8", $nombre));
                
                $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", $credito->getMonto());
                $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", $credito->getNumero());
                $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", $credito->getNroCuotas());
                
                $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", "=B{$row}/D{$row}");
                
                $cuotas = $credito->getCuotas();
                $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", $cuotas[0]->getMontoOriginal());
                
                $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", "=(D{$row}*F{$row})-B{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("H{$row}", $credito->getFecha()->format("d/m/Y"));
                $objPHPExcel->getActiveSheet()->SetCellValue("I{$row}", "=G{$row}/1.21");
                $objPHPExcel->getActiveSheet()->SetCellValue("J{$row}", "=I{$row}/D{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("K{$row}", "=G{$row}-I{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("L{$row}", "=K{$row}/D{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("M{$row}", count($credito->obtenerCuotasPagas()));
                $objPHPExcel->getActiveSheet()->SetCellValue("N{$row}", "=B{$row}-(M{$row}*E{$row})");
                $objPHPExcel->getActiveSheet()->SetCellValue("O{$row}", "=I{$row}-(M{$row}*J{$row})");
                $objPHPExcel->getActiveSheet()->SetCellValue("P{$row}", "=K{$row}-(M{$row}*L{$row})");
                
                $esFacturado = $credito->esFacturado() ? "SI" : "NO";
                $objPHPExcel->getActiveSheet()->SetCellValue("Q{$row}", $esFacturado);
                
                $cant++; $row++;
            endforeach;
            
        endforeach;
        $end_row = $row - 1;
        
        $objPHPExcel->getActiveSheet()->getStyle("B{$init_row}:B{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("E{$init_row}:E{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("F{$init_row}:F{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("G{$init_row}:G{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("H{$init_row}:H{$row}")->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY);
        $objPHPExcel->getActiveSheet()->getStyle("I{$init_row}:I{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("J{$init_row}:J{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("K{$init_row}:K{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("L{$init_row}:L{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("N{$init_row}:N{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("O{$init_row}:O{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("P{$init_row}:P{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        
        if ($cant > 1):
            $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", "TOTALES")->getStyle("A{$row}:P{$row}")->applyFromArray($style_header3);
            $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", "=SUM(B{$init_row}:B{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", "=SUM(D{$init_row}:D{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", "=SUM(E{$init_row}:E{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", "=SUM(F{$init_row}:F{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", "=SUM(G{$init_row}:G{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("I{$row}", "=SUM(I{$init_row}:I{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("J{$row}", "=SUM(J{$init_row}:J{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("K{$row}", "=SUM(K{$init_row}:K{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("L{$row}", "=SUM(L{$init_row}:L{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("M{$row}", "=SUM(M{$init_row}:M{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("N{$row}", "=SUM(N{$init_row}:N{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("O{$row}", "=SUM(O{$init_row}:O{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("P{$row}", "=SUM(P{$init_row}:P{$end_row})");
        endif;
        
        /* options */
        $objPHPExcel->getActiveSheet()->setTitle('Ventas');
        $objPHPExcel->getActiveSheet()->freezePane('B4');
        //$objPHPExcel->getActiveSheet()->freezePaneByColumnAndRow(1,1);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); /* Excel2007 */
        
        ob_end_clean();

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="ventas.xls"');
        header('Cache-Control: max-age=0');

        $objWriter->save('php://output');
        //exit();
    }
    
    public function exportJuiciosAction()
    {
        $style_header = array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => 'f8f988'),), 'font' => array('bold' => true,));
        $style_header1 = array('font' => array('bold' => true,));
        $style_header2 = array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => 'b7fda1'),), 'font' => array('bold' => true,));
        $style_header3 = array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => '94b9f9'),), 'font' => array('bold' => true,));
        
        $this->_helper->viewRenderer->setNoRender();
        $this->_helper->getHelper('layout')->disableLayout();
        
        $this->creditoDao = new Doctrine_Model_CreditoDao();
        
        $desde = $this->getRequest()->getParam('desde', null);
        $hasta = $this->getRequest()->getParam('hasta', null);
        $sucursalId = $this->getRequest()->getParam('sucursal', $this->view->usuario->getSucursal()->getId());
        $solo_facturados = $this->getRequest()->getParam('solo_facturados', null);
        
        $juicios = array();
        
        if (!empty($desde) && !empty($hasta)):
            $fecha_desde = DateTime::createFromFormat("d-m-Y", $desde);
            $fecha_hasta = DateTime::createFromFormat("d-m-Y", $hasta);
            
            if ($sucursalId):
                $creditos = $this->creditoDao->obtenerTodosEntreFechasPorSucursal($fecha_desde->format("Y-m-d"), $fecha_hasta->format("Y-m-d"), $sucursalId);
            elseif ($sucursalId == 0):
                $creditos = $this->creditoDao->obtenerTodosEntreFechas($fecha_desde->format("Y-m-d"), $fecha_hasta->format("Y-m-d"));
            endif;
            
            foreach ($creditos as $credito):
                if ($solo_facturados):
                    if ($credito->esFacturado()):
                        $creditos_facturados[$credito->getFecha()->format("m/Y")][] = $credito;
                    endif;
                else:
                    $creditos_facturados[$credito->getFecha()->format("m/Y")][] = $credito;
                endif;
            endforeach;
        endif;
        
        $objPHPExcel = new PHPExcel();
        
        /* propiedades */
        $objPHPExcel->getProperties()->setCreator("CREDYPHONE SA");
        $objPHPExcel->getProperties()->setTitle("CREDYPHONE SA - JUICIOS");
        $objPHPExcel->getProperties()->setDescription("EXPORTACION DE JUICIOS");

        $objPHPExcel->setActiveSheetIndex(0);
        
        $row = 1;
        
        $objPHPExcel->getActiveSheet()
                ->SetCellValue("A{$row}", "VENTAS DEL {$fecha_desde->format("d/m/Y")} AL {$fecha_hasta->format("d/m/Y")}")
                ->getStyle("A{$row}")->applyFromArray($style_header1);
        
        /* titles */
        $row += 2;
        $objPHPExcel->getActiveSheet()->getStyle("A{$row}:Q{$row}")->applyFromArray($style_header);
        $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", 'CLIENTE')->getColumnDimension("A")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", 'CREDITO')->getColumnDimension("B")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", 'N°')->getColumnDimension("C")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", 'CANT. CUOTAS')->getColumnDimension("D")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", 'CUOTA PURA')->getColumnDimension("E")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", 'PLAN CUOTA')->getColumnDimension("F")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", 'GTOS. E INT. PLAN')->getColumnDimension("G")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("H{$row}", 'FECHA CRED.')->getColumnDimension("H")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("I{$row}", 'INT. DEL PERIODO')->getColumnDimension("I")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("J{$row}", 'INT. POR MES')->getColumnDimension("J")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("K{$row}", 'IVA PERIODO')->getColumnDimension("K")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("L{$row}", 'IVA POR MES')->getColumnDimension("L")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("M{$row}", 'CUOTAS PAGAS')->getColumnDimension("M")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("N{$row}", 'DEBE CAPITAL')->getColumnDimension("N")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("O{$row}", 'DEBE INT.')->getColumnDimension("O")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("P{$row}", 'IVA')->getColumnDimension("P")->setAutoSize(true);
        $objPHPExcel->getActiveSheet()->SetCellValue("Q{$row}", 'FACTURADO')->getColumnDimension("Q")->setAutoSize(true);
        
        $credito = new Doctrine_Model_Entities_Credito();
        
        $cant = 1; $init_row = $row++;
        foreach ($creditos_facturados as $periodo):
            $new_periodo = true;
            foreach ($periodo as $credito):
                if ($new_periodo):
                    $fecha_periodo = $credito->getFecha()->format("m/Y");
                    $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", $fecha_periodo)
                            ->getStyle("A{$row}:Q{$row}")->applyFromArray($style_header2);
                    $new_periodo = false; $row++; 
                endif;
                $nombre = "{$credito->getCliente()->getApellido()}, {$credito->getCliente()->getNombres()}";
                $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", iconv("ISO-8859-1","UTF-8", $nombre));
                
                $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", $credito->getMonto());
                $objPHPExcel->getActiveSheet()->SetCellValue("C{$row}", $credito->getNumero());
                $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", $credito->getNroCuotas());
                
                $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", "=B{$row}/D{$row}");
                
                $cuotas = $credito->getCuotas();
                $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", $cuotas[0]->getMontoOriginal());
                
                $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", "=(D{$row}*F{$row})-B{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("H{$row}", $credito->getFecha()->format("d/m/Y"));
                $objPHPExcel->getActiveSheet()->SetCellValue("I{$row}", "=G{$row}/1.21");
                $objPHPExcel->getActiveSheet()->SetCellValue("J{$row}", "=I{$row}/D{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("K{$row}", "=G{$row}-I{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("L{$row}", "=K{$row}/D{$row}");
                $objPHPExcel->getActiveSheet()->SetCellValue("M{$row}", count($credito->obtenerCuotasPagas()));
                $objPHPExcel->getActiveSheet()->SetCellValue("N{$row}", "=B{$row}-(M{$row}*E{$row})");
                $objPHPExcel->getActiveSheet()->SetCellValue("O{$row}", "=I{$row}-(M{$row}*J{$row})");
                $objPHPExcel->getActiveSheet()->SetCellValue("P{$row}", "=K{$row}-(M{$row}*L{$row})");
                
                $esFacturado = $credito->esFacturado() ? "SI" : "NO";
                $objPHPExcel->getActiveSheet()->SetCellValue("Q{$row}", $esFacturado);
                
                $cant++; $row++;
            endforeach;
            
        endforeach;
        $end_row = $row - 1;
        
        $objPHPExcel->getActiveSheet()->getStyle("B{$init_row}:B{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("E{$init_row}:E{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("F{$init_row}:F{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("G{$init_row}:G{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("H{$init_row}:H{$row}")->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY);
        $objPHPExcel->getActiveSheet()->getStyle("I{$init_row}:I{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("J{$init_row}:J{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("K{$init_row}:K{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("L{$init_row}:L{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("N{$init_row}:N{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("O{$init_row}:O{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        $objPHPExcel->getActiveSheet()->getStyle("P{$init_row}:P{$row}")->getNumberFormat()->setFormatCode($this->currencyFormat);
        
        if ($cant > 1):
            $objPHPExcel->getActiveSheet()->SetCellValue("A{$row}", "TOTALES")->getStyle("A{$row}:P{$row}")->applyFromArray($style_header3);
            $objPHPExcel->getActiveSheet()->SetCellValue("B{$row}", "=SUM(B{$init_row}:B{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("D{$row}", "=SUM(D{$init_row}:D{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("E{$row}", "=SUM(E{$init_row}:E{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("F{$row}", "=SUM(F{$init_row}:F{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("G{$row}", "=SUM(G{$init_row}:G{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("I{$row}", "=SUM(I{$init_row}:I{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("J{$row}", "=SUM(J{$init_row}:J{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("K{$row}", "=SUM(K{$init_row}:K{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("L{$row}", "=SUM(L{$init_row}:L{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("M{$row}", "=SUM(M{$init_row}:M{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("N{$row}", "=SUM(N{$init_row}:N{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("O{$row}", "=SUM(O{$init_row}:O{$end_row})");
            $objPHPExcel->getActiveSheet()->SetCellValue("P{$row}", "=SUM(P{$init_row}:P{$end_row})");
        endif;
        
        /* options */
        $objPHPExcel->getActiveSheet()->setTitle('Ventas');
        $objPHPExcel->getActiveSheet()->freezePane('B4');
        //$objPHPExcel->getActiveSheet()->freezePaneByColumnAndRow(1,1);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); /* Excel2007 */
        
        ob_end_clean();

        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="ventas.xls"');
        header('Cache-Control: max-age=0');

        $objWriter->save('php://output');
        //exit();
    }
    
}
